package com.kly.user.service;

import com.fqgj.common.api.Page;
import com.kly.user.dto.*;
import com.fqgj.common.api.Response;
import com.kly.user.dto.chatter.request.ConversationOPReq;

import java.util.List;
import java.util.Map;

/**
 * Who like me 相关服务类
 * @author linqu
 */
public interface WlmService {

    /**
     * 推荐用户列表
     * @param userCode 用户码
     * @param recordNum 返回记录数
     * @return 返回推荐用户列表
     */
    Response<List<RecommendUserDto>> recommendUsers(String userCode, Integer recordNum);

    /**
     * 用户操作：1-喜欢 2-不喜欢
     * @param userCode 用户码
     * @param friendUserCode 被评价的用户
     * @param likeOp
     * @return
     */
    Response doLike(String userCode, String friendUserCode, Integer likeOp);

    /**
     * 用户操作：1-拉黑 2-取消拉黑 3-隐藏 4-举报
     * @param userCode 用户码
     * @param friendUserCode 被操作的用户
     * @param opType
     * @param reason 操作理由
     * @return
     */
    Response doAction(String userCode, String friendUserCode, Integer opType, String reason);

    /**
     * 添加WLM用户:
     * AddWlmReq.likeType: 用户喜好：1-喜欢 2-不喜欢
     * AddWlmReq.opType: 用户操作：1 拉黑  2取消拉黑 3隐藏  4举报
     * 如果AddWlmReq中likeType、opType为空，表明只是普通用户关系
     * @param addWlmReq 用户码
     * @return
     */
    Response<AddWlmUserDto> addWlmUser(AddWlmReq addWlmReq);

    /**
     * 通过flashchat建联
     */
    Response<AddWlmUserDto> connectByFlashChat(AddWlmReq addWlmReq);

    /**
     *
     * @param addWlmReq
     * @return
     */
    Response<AddWlmUserDto> doAction(AddWlmReq addWlmReq);

    /**
     * 设置关系标识
     * @return
     */
    Response addNewFlag(AddWlmReq addWlmReq);

    /**
     * 删除WLM用户
     */
    Response removeWlmUser(String userCode);

    /**
     * 功能描述：获取who like me 数量
     * @param userCode 用户码
     * @return
     */
    Response<Integer> wlmNum(String userCode);

    /**
     * 功能描述：获取who like me 列表数据
     * @param userCode 用户码
     * @return
     */
    Response<List<WlmUserDto>> wlmList(String userCode, Page page);

    /**
     * 读取喜欢的用户
     * @param userCode
     * @param page
     * @return
     */
    Response<List<LikeUserDto>> likeList(String userCode, Page page);


    /**
     * 读取like数量
     * @param userCode
     * @return
     */
    Response<Integer> likeCount(String userCode);

    /**
     * 功能描述：获取新建联用户关系
     * @param userCode 用户码
     * @return
     */
    Response<List<WlmUserDto>> queryLikeEachOtherList(String userCode, Page page);

    /**
     * 功能描述：获取用户关系
     * @param userCode 用户码
     * @param userCodeFriend 用户码
     * @return
     */
    Response<List<WlmUserDto>> getUserRelation(String userCode, String userCodeFriend);

    Integer updateLeaveTime(ConversationOPReq conversationOPReq);


    Response addUserUsageBenefits(AddWlmReq addWlmReq);

    /**
     * 判断是否通过wlm like建联
     * @param userCode
     * @param userCodeFriend
     * @return
     */
    Response<Integer> getUserMatch(String userCode, String userCodeFriend);



}
